﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VentaElectrodomesticos.Contrato;
using VentaElectrodomesticos.Datos;

namespace VentaElectrodomesticos.Negocio
{
    class FacturaNegocio : BaseNegocio<FacturaDAO,Factura>
    {
        private StockNegocio stockNegocio;

        public FacturaNegocio()
        {
            this.stockNegocio = new StockNegocio();
        }

        public Decimal? applyDiscount(Decimal? total, Decimal? value)
        {
            return total - (total * value / 100);
        }

        public Decimal? calculateTotal(List<Producto> productos)
        {
            return productos.Sum(p => p.__total);            
        }

        public Factura getPagos(Factura factura)
        {
            Pago pagoFilter = new Pago();
            pagoFilter.Factura_Id = factura.Id;
            factura.__pagos = new PagoNegocio().getAll(pagoFilter);
            return factura;
        }

        public Decimal? applyCuotas(Decimal? total, int totalCuotas, int cuotasApagar)
        {
            if (totalCuotas != 0)
            {
                Decimal? montoCuota = total / totalCuotas;
                return montoCuota * cuotasApagar;
            }
            return total;
        }

        public bool validarStock(List<Producto> productos, Sucursal sucursal)
        {
            foreach (Producto producto in productos)
            {
                if(!validarStock(producto, sucursal)) {
                    return false;
                }
            }
            return true;
        }

        public bool validarStock(Producto producto, Sucursal sucursal) {
            return producto.__cantidad <= this.stockNegocio.getLastStock(Convert.ToInt32(producto.Id), Convert.ToInt32((sucursal.Id)));
        }
    }
}
